package com.wdc.recursion;

import java.util.LinkedList;

public class E07HanoiTower {

    public static void main(String[] args) {
        init(1);
        print();
        move(1,a,b,c);

    }

    private static void print() {
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println("---------------");
    }

    //用链表来表示圆柱
    static LinkedList<Integer> a = new LinkedList<>();
    static LinkedList<Integer> b = new LinkedList<>();
    static LinkedList<Integer> c = new LinkedList<>();


    /**
     * 初始化圆盘
     *
     * @param n 表示初始圆盘个数
     */
    public static void  init(int n){
        //往圆柱放上圆盘
        for (int i = n; i >= 1; i--) {
            a.addLast(i);
        }
    }

    /**
     *
     * @param n 圆盘个数
     * @param a  左 圆柱
     * @param b  中 圆柱
     * @param c  右 圆柱
     */
    static void move(int n ,LinkedList<Integer> a,LinkedList<Integer> b,LinkedList<Integer> c){
        if (n == 0){
            return;
        }

        move(n-1,a,c,b);

        c.addLast(a.removeLast());
        print();
        move(n-1,b,a,c);
    }



}
